package gang.com.downloader;

import java.util.Observable;
import java.util.Observer;


/**
 * Created by xiaogangzai on 2017/11/4.
 * 观察者，在这个观察者与被观察者模式联想到了rxJava，按钮点击事件的观察者模式
 * 以致于想不通rxjava和retrofit封装后为什么请求放在ui线程到底，处理数据放在io线程，那么请求的过程到底是在哪个线程需要看一下原理
 */

public abstract class DataWatcher implements Observer{

    //这时候观察者能拿到被观察者改变的数据源
    @Override
    public void update(Observable observable, Object data) {
      if (data instanceof DownloadEntry)
      {
            notifyUpdate((DownloadEntry)data);
      }
    }
   //外层实现我们的update，就可以拿到我们的data，callback
    public abstract void notifyUpdate(DownloadEntry data) ;

    //更新的时候还需要一个状态.在外层能拿到data，通过notifyUpdate，通过他能更改我们的UI

}
